#ifndef __LIB_AGORA_ADMIN_IRIGHTMANAGER_H__
#define __LIB_AGORA_ADMIN_IRIGHTMANAGER_H__

#include "AdminIChannel.h"
#include "AdminIUser.h"
#include "AdminIChannelRight.h"
#include "AdminIHostRight.h"

namespace AgoraAdmin
{

	class IRightManager
	{
	public:
		virtual const IChannelRight&		GetChannelRight(IUser* user, IChannel* channel) = 0;
		virtual void						SetChannelRight(IUser* user, IChannel* channel, const bool canCreate, const bool canDelete, const bool canEdit, const bool canEditUser, const bool canTalk, const bool canWrite, const bool canKick, const bool canBan) = 0;
		virtual void						RemoveChannelRight(IUser* user, IChannel* channel) = 0;
		virtual void						RemoveChannelRight(IChannel* channel) = 0;
		virtual void						RemoveChannelRight(IUser* user) = 0;
		virtual const IHostRight&			GetHostRight(IUser* user) = 0;
		virtual void						SetHostRight(IUser* user, const bool canChangeLogin, const bool canChangePassword, const bool canChangeChannel, const bool canCreateChannel, const bool canDeleteChannel, const bool canMoveChannel, const bool canKickUser, const bool canBanUser, const bool canEditUser) = 0;
		virtual void						RemoveHostRight(IUser* user) = 0;
	};

}

#endif
